package com.itheima.controller;


import com.aili.heima.AliyunOSSOperator;
import com.itheima.service.EmpService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;

@Slf4j
@Component
public class TimedClearRedundantPhotos {
    @Autowired
    private EmpService empService;
    @Autowired
    private AliyunOSSOperator aliyunOSSOperator;

    @Scheduled(fixedRate = 6000000)
    public void clear() throws Exception {
        Map<String, Long> maps = aliyunOSSOperator.list();
        log.info("执行冗余照片清理");
            List<String> imgList = empService.selectImage();
            Set<String> upImgUrl = maps.keySet();
            if(upImgUrl.size()>0){
            for (String upImg : upImgUrl) {
                boolean flag = false;
                for (String img : imgList) {
                    String imgUrl = extractOssRelativePath(img);
                    if (Objects.equals(imgUrl, upImg)) {
                        flag = true;
                    }
                }
                if (!flag) {
                    aliyunOSSOperator.delete(upImg);
                    log.info("删除冗余照片:" + upImg);
                }
            }
        }
        log.info("未发现冗余照片");
    }
    /**
     * 从OSS图片URL中提取相对路径（OSS的Key）
     * @param imgUrl 业务系统中存储的完整OSS图片URL（如https://xxx.oss-cn-beijing.aliyuncs.com/2025/09/xxx.jpg）
     * @return OSS文件的相对路径（Key），如"2025/09/xxx.jpg"；若URL格式不匹配则返回null
     */
    private String extractOssRelativePath(String imgUrl) {
        // 1. 定义你的OSS域名前缀（必须与业务系统存储的URL前缀完全一致）
        // 格式：https://[bucketName].[endpoint]/
        String ossDomainPrefix = "https://dcmmtlias.oss-cn-beijing.aliyuncs.com/";

        // 2. 校验URL是否有效且以当前OSS域名为前缀
        if (imgUrl == null || !imgUrl.startsWith(ossDomainPrefix)) {
            // 若URL为空，或不是当前OSS的图片，返回null（不参与匹配）
            return null;
        }

        // 3. 截取域名前缀后的部分，即OSS文件的相对路径（Key）
        String ossKey = imgUrl.substring(ossDomainPrefix.length());

        return ossKey;
    }

}
